package cn.iocoder.yudao.module.contract.service.contractTemplate;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.contract.controller.admin.contractTemplate.vo.*;
import cn.iocoder.yudao.module.contract.dal.dataobject.contractTemplate.ContractTemplateDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.contract.dal.dataobject.frameworkAgreement.FrameworkAgreementDO;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 合同模板 Service 接口
 *
 * @author 芋道源码
 */
public interface ContractTemplateService extends IService<ContractTemplateDO> {

    /**
     * 创建合同模板
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createTemplate(@Valid ContractTemplateSaveReqVO createReqVO);

    /**
     * 更新合同模板
     *
     * @param updateReqVO 更新信息
     */
    void updateTemplate(@Valid ContractTemplateSaveReqVO updateReqVO);

    /**
     * 删除合同模板
     *
     * @param id 编号
     */
    void deleteTemplate(Long id);

    /**
     * 获得合同模板
     *
     * @param id 编号
     * @return 合同模板
     */
    ContractTemplateDO getTemplate(Long id);

    /**
     * 获得合同模板分页
     *
     * @param pageReqVO 分页查询
     * @return 合同模板分页
     */
    PageResult<ContractTemplateDO> getTemplatePage(ContractTemplatePageReqVO pageReqVO);

    List<ContractTemplateDO> getTemplateList(ContractTemplateDO templateDO);
}